/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.proteu.hibernate.beans;

import br.com.proteu.hibernate.util.FireBirdHelperProteu;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.Transient;

/**
 *
 * @author ricardo
 */
@Entity
@Table(name="ESPECIALIDADESCLINICA")
public class EspecialidadesClinicaProteu implements Serializable{

    @Id
    @Column(name="ESC_ST_CODIGO")
    private String escStCodigo;
    @Column(name="ESC_ST_PROC_AMB")
    private String escStProcAmb;
    @Column(name="ESC_ST_PROC_DESCRICAO")
    private String escStProcDescricao;
    @Column(name="ESC_CH_BLOQUEADO")
    private String escChBloqueado;
    @Column(name="EPS_ST_CODIGO")
    private String epsStCodigo;
    @Column(name="ESC_ST_SYS_DATA")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date escStSysData;
    @Column(name="USU_IN_CODIGO")
    private Integer usuInCodigo;

    @Transient
    private UsuariosProteu usuarioObject;
    @Transient
    private List<MedicosProteu> listMedicosProteu;
    

    

    


    public void setUsuarioObject(UsuariosProteu usuarioObject) {
        this.usuarioObject = usuarioObject;
    }



    public String getEpsStCodigo() {
        return epsStCodigo;
    }

    public void setEpsStCodigo(String epsStCodigo) {
        this.epsStCodigo = epsStCodigo;
    }

    public String getEscChBloqueado() {
        return escChBloqueado;
    }

    public void setEscChBloqueado(String escChBloqueado) {
        this.escChBloqueado = escChBloqueado;
    }

    public String getEscStCodigo() {
        return escStCodigo;
    }

    public void setEscStCodigo(String escStCodigo) {
        this.escStCodigo = escStCodigo;
    }

    public String getEscStProcAmb() {
        return escStProcAmb;
    }

    public void setEscStProcAmb(String escStProcAmb) {
        this.escStProcAmb = escStProcAmb;
    }

    public String getEscStProcDescricao() {
        return escStProcDescricao;
    }

    public void setEscStProcDescricao(String escStProcDescricao) {
        this.escStProcDescricao = escStProcDescricao;
    }

    public Date getEscStSysData() {
        return escStSysData;
    }

    public void setEscStSysData(Date escStSysData) {
        this.escStSysData = escStSysData;
    }

    public Integer getUsuInCodigo() {
        return usuInCodigo;
    }

    public void setUsuInCodigo(Integer usuInCodigo) {
        this.usuInCodigo = usuInCodigo;
    }


    @Transient
    public UsuariosProteu getUsuarioObject() {
        if(usuarioObject == null && usuInCodigo != null){
            usuarioObject = (UsuariosProteu)FireBirdHelperProteu.getObject(UsuariosProteu.class, usuInCodigo);
        }
        return usuarioObject;
    }

    @Transient
    public List<MedicosProteu> getListMedicosProteu() {
        if(listMedicosProteu == null){
                List<MedicoEspecialidadesProteu> listME = (List<MedicoEspecialidadesProteu>)
                FireBirdHelperProteu.getListOfObjectByKeyEq(MedicoEspecialidadesProteu.class, "escStCodigo", this.escStCodigo);
                if(listME != null && listME.size()>0){
                    listMedicosProteu = new ArrayList<MedicosProteu>();
                    for(MedicoEspecialidadesProteu me : listME){
                        MedicosProteu medicoP = me.getMedicoObject();
                        if(medicoP != null){
                            listMedicosProteu.add(medicoP);
                        }
                    }
                }
         }
        
        return listMedicosProteu;
    }


    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final EspecialidadesClinicaProteu other = (EspecialidadesClinicaProteu) obj;
        if ((this.escStCodigo == null) ? (other.escStCodigo != null) : !this.escStCodigo.equals(other.escStCodigo)) {
            return false;
        }
        return true;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 53 * hash + (this.escStCodigo != null ? this.escStCodigo.hashCode() : 0);
        return hash;
    }



}
